package middleware

import (
	"exercise/application/yiran/app/libs"
	"exercise/application/yiran/app/service"
	"github.com/gin-gonic/gin"
	"time"
)

func CheckMember() gin.HandlerFunc {
	return func(ctx *gin.Context) {
		//检测token
		token := ctx.GetHeader("token")
		if token == "" {
			libs.TokenToast(ctx, "请先登录")
			ctx.Abort()
			return
		}

		//解析用户信息
		user, err := service.NewJwtService().ValidateToken(token)
		if err != nil {
			libs.TokenToast(ctx, err.Error())
			ctx.Abort()
			return
		}

		//时间校验
		if time.Now().Unix() > user.ExpiresAt {
			libs.TokenToast(ctx, "用户信息过期,请先登录")
			ctx.Abort()
			return
		}
		//存入ctx中
		ctx.Set("userId", user.Id)             //任何地方以：ctx.Get("userId") 取出
		ctx.Set("schoolName", user.SchoolName) //任何地方以：ctx.Get("schoolName") 取出
		ctx.Set("userName", user.Username)     //任何地方以：ctx.Get("userName") 取出
		ctx.Set("schoolId", user.SchoolId)     //任何地方以：ctx.Get("schoolId") 取出
		ctx.Set("roleId", user.RoleId)         //任何地方以：ctx.Get("roleId") 取出
		ctx.Set("isAdmin", user.IsAdmin)       //任何地方以：ctx.Get("isAdmin") 取出
		ctx.Next()
	}
}
